package cn.tedu.csmall.cart.webapi.kafka;

import cn.tedu.csmall.commons.pojo.cart.vo.CartTbl;
import com.google.gson.Gson;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

@Component
public class Consumer {
    //SpringKafka接收消息依靠的是一个监听机制
    //提供了一个监听线程，实时关注kafka信息的往来
    //如果有消息发送到指定的主题中，就是自动调用监听注解描述的方法
    @KafkaListener(topics = "myCart")
    //下面方法会在kafka中出现主题名称为myCart时运行，而且方法的参数就是消息对象
    public void received(ConsumerRecord<String,String> record){
        //参数必须是ConsumerRecord
        //ConsumerRecord<[主题类型],[消息类型]>
        //record就是消息本身，从中获取数据
        String json = record.value();
        //将json格式字符串转换为java对象
        Gson gson = new Gson();
        //Gson提供的fromJson方法可以帮我们把json格式的数据转成指定的类型
        CartTbl cart = gson.fromJson(json, CartTbl.class);
        System.out.println("接收到消息:"+cart);
    }
}
